package com.ddxz.middleground.master.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * interface description
 *
 * @author 朱宗刚
 * @version 1.0.0
 * @date 2020/7/29
 */

@Mapper
@Repository
public interface UserRoleMapper {
    /**
     * 删除用户关联的角色
     *
     * @param userId 用户标识
     * @param tenant 租户信息
     * @return 删除记录条数
     */
    Integer removeByUserId(@Param("userId") String userId, @Param("tenant") String tenant);

    /**
     * 获取用户相关的角色标识清单
     *
     * @param userId 用户标识
     * @param tenant 租户信息
     * @return 角色标识清单
     */
    List<String> getRoleIdByUserId(@Param("userId") String userId, @Param("tenant") String tenant);

    /**
     * 将用户与指定的角色解绑
     *
     * @param userId     用户标识
     * @param invalidIds 角色标识
     * @param tenant     租户信息
     * @return 是否解绑成功
     */
    Integer removeUserRole(@Param("userId") String userId, @Param("roleIds") List<String> invalidIds, @Param("tenant") String tenant);

    /**
     * 将用户与指定的角色绑定
     *
     * @param userId 用户标识
     * @param newIds 角色清单
     * @param tenant 租户信息
     * @return 是否绑定成功
     */
    Integer bindUserRole(@Param("userId") String userId, @Param("roleIds") List<String> newIds, @Param("tenant") String tenant);

    /**
     * 统计与指定角色绑定的用户个数
     *
     * @param roleId 角色标识
     * @param tenant 租户信息
     * @return 用户数
     */
    Integer getNumByRole(@Param("roleId") String roleId, @Param("tenant") String tenant);
}
